﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.IO;
using QUANLIBANHANG.BUS;
namespace QUANLIBANHANG.GUI
{
    public partial class UserControlBackupRestore : DevExpress.XtraEditors.XtraUserControl
    {
        FileDialog filedialog;
        public UserControlBackupRestore()
        {
            InitializeComponent();
            
            
        }
        // Lấy thư mục backup
        private void btnBrowseBackup_Click(object sender, EventArgs e)
        {
            filedialog = new SaveFileDialog();
            filedialog.Filter = "File style(*.bak)|*.bak";
            filedialog.DefaultExt = "bak";
            if (filedialog.ShowDialog() == DialogResult.OK)
            {
                txtDuongDanBackup.Text = filedialog.FileName;
            }
        }
        // Thực hiện Backup
        private void btnBackup_Click(object sender, EventArgs e)
        {
            marqueeProgressBarControlBackup.Visible = true;
            if (txtDuongDanBackup.Text == "")
                MessageBox.Show("Chưa chọn đường dẫn", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                if (!Directory.Exists(Path.GetDirectoryName(txtDuongDanBackup.Text)))// Kiểm tra duòng dẫn
                    MessageBox.Show("Thư mục không tồn tại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                {
                    

                    try
                    {
                        BackupRestoreBUS.backupData(txtDuongDanBackup.Text);
                        //ConnectionSQL.commandSQL("BACKUP DATABASE QUANLIBANHANG TO DISK='" + txtDuongDanBackup.Text + "' WITH FORMAT");
                        MessageBox.Show("Backup thành công!", "Thông báo");
                        marqueeProgressBarControlBackup.Visible = false;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Không thể backup trong thư mục này\n Vui lòng chọn địa chỉ khác\n"+ex.Message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        marqueeProgressBarControlBackup.Visible = false;
                    }
                   
                }  

            }
        }
        // Lấy đường dẫn Restore
        private void btnBorowseRestore_Click(object sender, EventArgs e)
        {
            filedialog = new OpenFileDialog();
            filedialog.Filter = "File style(*.bak)|*.bak";
            filedialog.DefaultExt = "bak";
            if (filedialog.ShowDialog() == DialogResult.OK)
            {
                txtDuongdanRestore.Text = filedialog.FileName;

            }

        }

       // Thực hiẹn Restore
        private void btnRestore_Click(object sender, EventArgs e)
        {
            progressPanelRestore.Visible = true;
            if (txtDuongdanRestore.Text == "")
                MessageBox.Show("Chưa chọn đường dẫn", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
            {
                if (!File.Exists(txtDuongdanRestore.Text))// Kiểm tra đường dẫn
                    MessageBox.Show("File không tồn tại!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                else
                {
                    
                    try
                    {
                        BackupRestoreBUS.restoreData(txtDuongdanRestore.Text);
                       
                        MessageBox.Show("Restore thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    progressPanelRestore.Visible = false;
                }

            }
        }


    }
}
